#include <iostream>

template<typename T>
void print(T t)//展开参数包的终点
{
    std::cout<<"参数值："<<std::boolalpha<<t<<" , 类型: "<< typeid(t).name()<<std::endl;
}
/**
 * 递归展开参数包，所以要单独提一个模板参数和函数参数，这样才不会无限递归
 * @tparam T 一个模板参数
 * @tparam Args 模板参数包
 * @param arg 一个函数参数
 * @param args 函数参数包
 */
template <typename T,typename ... Args>
void print(const T& arg,const Args & ... args)
{
    std::cout<<"参数值："<<arg<<" , 类型: "<< typeid(arg).name()<<std::endl;
    print(args...);//使用时...在后，定义时...在前
}

int main() {
    print("dhfjd",3432,"fhdj",2.43,true);
    return 0;
}

